#ifndef __CROSSFIRE_COLLISIONABLE
#define __CROSSFIRE_COLLISIONABLE

enum ECF_TraceType
{
  Ray,
  Box,
  Shpeare
};

struct SCF_CollisionInfo
{
  bool IsCollision;
  bool TryStep;
  bool IsGround;

  float TraceRatio;
  float TraceRadius;

  D3DXVECTOR3 Normal;
  D3DXVECTOR3 Position;
  D3DXVECTOR3 TraceMaxs;
  D3DXVECTOR3 TraceMins;
  D3DXVECTOR3 Extents;

  ECF_TraceType TraceType;
};

interface ICF_CollisionDetect
{
	void TraceRay(D3DXVECTOR3 vStart, D3DXVECTOR3 vEnd, SCF_CollisionInfo* collInfo);
	void TraceSphere(D3DXVECTOR3 vStart, D3DXVECTOR3 vEnd, float radius, SCF_CollisionInfo* collInfo);
	void TraceBox(D3DXVECTOR3 vStart, D3DXVECTOR3 vEnd, D3DXVECTOR3 vMin, D3DXVECTOR3 vMax, SCF_CollisionInfo* collInfo);
};

#endif